package JDBC;

import java.sql.*;

/**
 * 测试ResultSet结果集的用法
 */
public class demo4 {
    public static void main(String[] args) {
        Connection conn= null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //加载类驱动
            Class.forName("com.mysql.jdbc.Driver");
            //建立链接(连接对象内部其实包含了socket对象，是一个远程连接，比较耗时！这是Connection对象管理的一个要点)
            //真正开发中.为了提高效率，都会使用连接池来管理连接对象
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/zz?characterEncoding=UTF-8","root","123456");

            String sql = "SELECT id,userName FROM user WHERE id>?";//?是占位符,可以避免sql注入
            ps = conn.prepareStatement(sql);
            ps.setObject(1,2);//把id>2的的查询出来

            rs=ps.executeQuery();
            while (rs.next()){//是否有下一条
                System.out.println(rs.getInt(1)+"-----"+rs.getString(2));//取出第一列(竖着)
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //遵循后开先开  不要在try里面合并，三个要分开写，第一个有问题，后两个会不执行
            try {
                if(rs!=null){
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(ps!=null){
                    ps.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(conn!=null){
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
